package com.ruoyi.apiserver.services;

import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;

public class ReportGenerationConsumerServiceTest {
    public static void main(String[] args) {
        // 测试序列化不同类型的数据
        Map<String, Object> testMessage = new HashMap<>();
        testMessage.put("outTradeNo", "TEST20251120001");
        testMessage.put("userId", 12345L);
        testMessage.put("timestamp", System.currentTimeMillis());
        
        System.out.println("测试消息: " + testMessage);
        
        // 测试各种类型的值序列化
        Map<String, Object> testData = new HashMap<>();
        testData.put("string_value", "这是一个字符串");
        testData.put("int_value", 123);
        testData.put("double_value", 45.67);
        testData.put("boolean_value", true);
        testData.put("null_value", null);
        testData.put("array_value", new int[]{1, 2, 3});
        
        System.out.println("测试数据序列化:");
        for (Map.Entry<String, Object> entry : testData.entrySet()) {
            // 模拟序列化过程
            String jsonValue = serializeToJson(entry.getValue());
            System.out.println(entry.getKey() + ": " + entry.getValue() + " (" + 
                (entry.getValue() != null ? entry.getValue().getClass().getSimpleName() : "null") + 
                ") -> JSON: " + jsonValue);
        }
    }
    
    /**
     * 将对象序列化为JSON字符串（复制自ReportGenerationConsumerService）
     * @param obj 要序列化的对象
     * @return JSON字符串
     */
    private static String serializeToJson(Object obj) {
        if (obj == null) {
            return "";
        }
        
        try {
            // 如果对象本身就是字符串，直接返回
            if (obj instanceof String) {
                return (String) obj;
            }
            
            // 使用Jackson ObjectMapper序列化
            ObjectMapper objectMapper = new ObjectMapper();
            return objectMapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            // 如果Jackson序列化失败，尝试使用Hutool的JSONUtil
            try {
                return JSONUtil.toJsonStr(obj);
            } catch (Exception ex) {
                // 如果两种方式都失败，返回对象的toString()结果
                return obj.toString();
            }
        }
    }
}